package main

import "fmt"

// 有效的括号

func isValid(s string) bool {
	n := len(s)
	if n == 0 || s == "" {
		return false
	}

	// 判断第一个字符是否是左括号
	if s[0] == ')' || s[0] == ']' || s[0] == '}' {
		return false
	}

	sk := []rune{}

	for _, ch := range s {
		if ch == '(' || ch == '[' || ch == '{' {
			sk = append(sk, ch)
		} else if (ch == ')' && len(sk) > 0 && sk[len(sk)-1] == '(') ||
			(ch == ']' && len(sk) > 0 && sk[len(sk)-1] == '[') ||
			(ch == '}' && len(sk) > 0 && sk[len(sk)-1] == '{') {
			sk = sk[:len(sk)-1]
		} else {
			return false
		}
	}
	return len(sk) == 0
}

func main() {
	s := "()"
	res := isValid(s)
	fmt.Println(res)
}
